#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//int main()
//{
//    int a = 0;
//    int w = 0;
//    double v = 0;
//    scanf("%d", &a);
//
//    w = a;
//    v = 10 + a / 10.0;
//    if (w > v)
//        printf("v");
//    else
//        printf("w");
//
//    return 0;
//}
//

//int main()
//{
//    int x1 = 0;
//    int y1 = 0;
//    int x = 0;
//    int y = 0;
//    scanf("%d %d\n%d %d", &x, &y, &x1, &y1);
//
//    if (x1 > x && y1 == y)
//        printf("r");
//    else if (x1 < x && y1 == y)
//        printf("l");
//    else if (x1 == x && y1 > y)
//        printf("u");
//    else
//        printf("d");
//
//
//    return 0;
//}
//

//int main()
//{
//    int day = 0;
//    scanf("%d", &day);
//
//    switch (day)
//    {
//    case 1:
//        printf("Monday");
//        break;
//    case 2:
//        printf("Tuesday");
//        break;
//    case 3:
//        printf("Wednesday");
//        break;
//    case 4:
//        printf("Thursday");
//        break;
//    case 5:
//        printf("Friday");
//        break;
//    case 6:
//        printf("Saturday");
//        break;
//    case 7:
//        printf("Sunday");
//        break;
//    default:
//        ;
//    }
//
//    return 0;
//}
//

//int main()
//{
//    int a = 0;
//    while (scanf("%d", &a) != EOF)
//    {
//        switch (a)
//        {
//        case 200:
//            printf("OK\n");
//            break;
//        case 202:
//            printf("Accepted\n");
//            break;
//        case 400:
//            printf("Bad Request\n");
//            break;
//        case 403:
//            printf("Forbidden\n");
//            break;
//        case 404:
//            printf("Not Found\n");
//            break;
//        case 500:
//            printf("Internal Server Error\n");
//            break;
//        case 502:
//            printf("Bad Gateway\n");
//            break;
//        default:
//            ;
//        }
//    }
//    return 0;
//}
//

//int main()
//{
//    int a;
//    while (scanf("%d", &a) != EOF)
//    {
//        if (a > 0)
//            printf("1\n");
//        else if (a == 0)
//            printf("0.5\n");
//        else
//            printf("0");
//    }
//    return 0;
//}
//

//int main()
//{
//    int y, m, d = 0;
//    int y1, m1, d1 = 0;
//
//    while (scanf("%d %d %d\n%d %d %d", &y, &m, &d, &y1, &m1, &d1) != EOF)
//    {
//        if ((y1 > y) || (y1 == y && m1 > m) || (y1 == y && m1 == m && d1 >= d))
//            printf("yes\n");
//        else
//            printf("no\n");
//    }
//    return 0;
//}
//

//#include <math.h>
//
//int main()
//{
//    float a, b, c = 0.0f;
//    while (scanf("%f %f %f", &a, &b, &c) != EOF)
//    {
//        if (a == 0)
//            printf("Not quadratic equation\n");
//        else
//        {
//            float i = b * b - 4 * a * c;
//            if (i == 0)
//            {
//                float x1 = -b / (2 * a);
//                if (x1 == 0)
//                    printf("x1=x2=0.00\n");
//                else
//                    printf("x1=x2=%.2f\n", x1);
//            }
//            else if (i > 0)
//            {
//                float x1 = (-b - sqrt(i)) / (2 * a);
//                float x2 = (-b + sqrt(i)) / (2 * a);
//                printf("x1=%.2f;x2=%.2f\n", x1, x2);
//            }
//            else
//            {
//                float x, y = 0.0f;
//                x = (-b) / (2 * a);
//                y = sqrt(-i) / (2 * a);
//                if (x == 0)
//                    printf("x1=0.00-%.2fi;x2=0.00+%.2fi", y, y);
//                else
//                    printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi", x, y, x, y);
//            }
//
//        }
//    }
//    return 0;
//}
//

//int is_leap_year(int y)
//{
//    if (((0 == y % 4) && (0 != y % 100)) || (0 == y % 400))
//        return 1;
//    else
//        return 0;
//}
//
//int main()
//{
//    int y, m = 0;
//    while (scanf("%d %d", &y, &m) != EOF)
//    {
//        switch (m)
//        {
//        case 1:
//        case 3:
//        case 5:
//        case 7:
//        case 8:
//        case 10:
//        case 12:
//            printf("31\n");
//            break;
//        case 2:
//        {
//            if (1 == is_leap_year(y))
//                printf("29\n");
//            else
//                printf("28\n");
//        }
//        break;
//        case 4:
//        case 6:
//        case 9:
//        case 11:
//            printf("30\n");
//            break;
//        default:
//            ;
//        }
//    }
//    return 0;
//}
//

int main()
{
	int arr[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	int y = 0;
	int m = 0;

	while ((scanf("%d %d", &y, &m)) != EOF)
	{
		int day = arr[m];
		if (2 == m)
		{
			if (((0 == y % 4) && (0 != y % 100)) || (0 == y % 400))
				day++;
			else
				day;
		}
		printf("%d\n", day);
	}

	
	return 0;
}

